
package com.be.beadmin.design.service;

import com.be.beadmin.design.dto.input.*;
import com.be.beadmin.design.dto.output.UnStandProductWorkHourAndCycleEx;
import com.be.beadmin.design.dto.output.UnStandProductProcessInfoEx;
import org.springframework.data.domain.Page;
import com.be.beadmin.common.entity.PageEntity;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
* @description 服务接口
* @author cms
* @date 2023-09-13
**/
public interface UnStandProductProcessInfoService {


    /**
     * 分页的查询接口
     * @param  unStandTypeId + PageEntity
     * @return
     */
    Page<BopPocessWorkHourAndCycle> getUnStandProductProcessInfoByPage(UnStandProductProcessInfoQueryCriteria unStandProductProcessInfoQueryCriteria);

    /**
     * 排程页获取柜体工艺工序工时(含标柜/非标柜)
     * @param unStandProductProcessInfoQueryCriteria
     * @return
     */
    Page<Object> getPagedProductProcessInfo(UnStandProductProcessInfoQueryCriteria unStandProductProcessInfoQueryCriteria);

    /**
    * @param unStandProductProcessInfoDto
    */
    void addUnStandProductProcessInfo(UnStandProductProcessInfoDto unStandProductProcessInfoDto);

    /**
    * @param unStandProductProcessInfoDto
    */
    void updateUnStandProductProcessInfo(UnStandProductProcessInfoDto unStandProductProcessInfoDto);

    /**
    * @param id
    */
    void delUnStandProductProcessInfo(String id);

    /**
    * 删除多个角色
    * @param ids
    */
    void delUnStandProductProcessInfos (List<String> ids);

    void addUnStandProductBopAndProcessDto(UnStandProductBopAndProcessDto unStandProductBopAndProcessDto);

    UnStandProductProcessInfoEx getUnStandProductProcessInfo(String unStandTypeId);

    void setBop(String unStandTypeId, String bopCode);

    UnStandBopInfo getBopInfo(String unStandTypeId);

    void setInitialBop(String unStandTypeId, String unStandTypeCode, String unStandTypeName,String bopCode);

    List<UnStandProductWorkHourAndCycleEx> getUnstandProductWorkHourAndCycleByProjectInfo(String projectId,String projectName, String projectCode);

    List<UnStandProductWorkHourAndCycleEx> getUnstandProductWorkHourAndCycleByProductIds(List<String> productIds);

    void uploadWorkhourAndCycle(MultipartFile file);

}